package com.hzcx.app.simplechat.api;


import android.content.Context;

import com.hzcx.app.simplechat.base.BaseEmptyBean;
import com.hzcx.app.simplechat.bean.UpLoadImgBean;
import com.hzcx.app.simplechat.ui.chat.bean.ChatBottomAssistantMenuBean;
import com.hzcx.app.simplechat.ui.chat.bean.ChatCollectBean;
import com.hzcx.app.simplechat.ui.chat.bean.ChatHistoryBean;
import com.hzcx.app.simplechat.ui.chat.bean.ChatQuickMsgBean;
import com.hzcx.app.simplechat.ui.chat.bean.GroupSearchBean;
import com.hzcx.app.simplechat.ui.friend.bean.FriendBean;
import com.hzcx.app.simplechat.ui.friend.bean.FriendCityBean;
import com.hzcx.app.simplechat.ui.friend.bean.FriendLableInfoBean;
import com.hzcx.app.simplechat.ui.friend.bean.FriendLableListBean;
import com.hzcx.app.simplechat.ui.friend.bean.FriendRequestBean;
import com.hzcx.app.simplechat.ui.friend.bean.GroupListBean;
import com.hzcx.app.simplechat.ui.group.bean.GroupCreateBean;
import com.hzcx.app.simplechat.ui.group.bean.GroupInfoBean;
import com.hzcx.app.simplechat.ui.group.bean.GroupJoinBean;
import com.hzcx.app.simplechat.ui.group.bean.ManagerMembersBean;
import com.hzcx.app.simplechat.ui.group.bean.MembersBean;
import com.hzcx.app.simplechat.ui.group.bean.QueryMembersBean;
import com.hzcx.app.simplechat.ui.home.bean.AddFriendSearchBean;
import com.hzcx.app.simplechat.ui.login.bean.DomainNameBean;
import com.hzcx.app.simplechat.ui.login.bean.LoginInfoBean;
import com.hzcx.app.simplechat.ui.login.bean.PhoneCityBean;
import com.hzcx.app.simplechat.ui.login.bean.UserRegisterBean;
import com.hzcx.app.simplechat.ui.main.bean.FriendRequestCountBean;
import com.hzcx.app.simplechat.ui.moment.bean.MomentBean;
import com.hzcx.app.simplechat.ui.moment.bean.MomentCommentBean;
import com.hzcx.app.simplechat.ui.moment.bean.MomentInfoBean;
import com.hzcx.app.simplechat.ui.moment.bean.NewMessageCountBean;
import com.hzcx.app.simplechat.ui.moment.bean.NewMessageListBean;
import com.hzcx.app.simplechat.ui.publicui.bean.HxUserInfoBean;
import com.hzcx.app.simplechat.ui.publicui.bean.PayListBean;
import com.hzcx.app.simplechat.ui.publicui.bean.ProtocolBean;
import com.hzcx.app.simplechat.ui.publicui.bean.ShareInfoBean;
import com.hzcx.app.simplechat.ui.publicui.bean.ShareMineInfoBean;
import com.hzcx.app.simplechat.ui.publicui.bean.SloganMemberBean;
import com.hzcx.app.simplechat.ui.publicui.bean.UpdateVersionBean;
import com.hzcx.app.simplechat.ui.setting.bean.AutoSendMessageBean;
import com.hzcx.app.simplechat.ui.setting.bean.BatchClearListBean;
import com.hzcx.app.simplechat.ui.setting.bean.BlackListBean;
import com.hzcx.app.simplechat.ui.setting.bean.GroupMessageListBean;
import com.hzcx.app.simplechat.ui.setting.bean.ReportBean;
import com.hzcx.app.simplechat.ui.setting.bean.SettingFindMyWayBean;
import com.hzcx.app.simplechat.ui.setting.bean.VipInfoBean;
import com.hzcx.app.simplechat.ui.setting.bean.VipSettingBean;
import com.hzcx.app.simplechat.ui.user.bean.CityListBean;
import com.hzcx.app.simplechat.ui.user.bean.UserInfoBean;
import com.hzcx.app.simplechat.util.token.TokenUtils;

import java.util.List;

import io.reactivex.Observable;
import okhttp3.MultipartBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
import retrofit2.http.Url;

/**
 * 所有请求接口
 */
public interface RequestInterface {

    /**
     * 获取号码城市地区
     *
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/sms/phone_prefix")
    Observable<BaseResponse<List<PhoneCityBean>>> getPhoneCity();

    /**
     * 密码登录
     *
     * @param mobile
     * @param password
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/password_login")
    Observable<BaseResponse<LoginInfoBean>> loginByPwd(@Field("mobile") String mobile, @Field("password") String password, @Field("logindevice") String logindevice,
                                                       @Field("area_code") String area_code, @Field("uniquely") String uniquely);

    /**
     * 发送验证码
     *
     * @param mobile
     * @param event
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/sms/sms_send")
    Observable<BaseResponse<BaseEmptyBean>> sendCode(@Field("mobile") String mobile, @Field("event") String event, @Field("area_code") String area_code,
                                                     @Field("logindevice") String logindevice, @Field("uniquely") String uniquely);

    /**
     * 验证码登录
     *
     * @param mobile
     * @param captcha
     * @param logindevice
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/mobile_login")
    Observable<BaseResponse<LoginInfoBean>> loginByCode(@Field("mobile") String mobile, @Field("captcha") String captcha, @Field("logindevice") String logindevice,
                                                        @Field("area_code") String area_code, @Field("uniquely") String uniquely);

    /**
     * 上传图片
     *
     * @param token
     * @param name
     * @return
     */
    @Headers("urlname:contenturl")
    @Multipart
    @POST("addons/alioss/index/app_upload")
    Observable<BaseResponse<UpLoadImgBean>> upLoadImg(@Header("token") String token, @Part MultipartBody.Part name);

    /**
     * 修改或上传用户资料
     *
     * @param token
     * @param avatar
     * @param nickname
     * @param chatnumber
     * @param gender
     * @param birthday
     * @param area
     * @param bio
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/member_profile")
    Observable<BaseResponse<BaseEmptyBean>> updateUserInfo(@Header("token") String token, @Field("avatar") String avatar, @Field("nickname") String nickname,
                                                           @Field("chatnumber") String chatnumber, @Field("gender") String gender, @Field("birthday") String birthday,
                                                           @Field("area") String area, @Field("area_id") String area_id, @Field("bio") String bio,
                                                           @Field("backimage") String backimage);

    /**
     * 获取用户信息
     *
     * @param token
     * @param id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/member_info")
    Observable<BaseResponse<UserInfoBean>> getUserInfo(@Header("token") String token, @Field("id") int id);

    /**
     * 验证验证码是否正确
     *
     * @param mobile
     * @param captcha
     * @param event
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/sms/check")
    Observable<BaseResponse<BaseEmptyBean>> checkCode(@Field("mobile") String mobile, @Field("captcha") String captcha, @Field("event") String event);

    /**
     * 重置密码
     *
     * @param newpassword
     * @param captcha
     * @param mobile
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/reset_pwd")
    Observable<BaseResponse<BaseEmptyBean>> forgetPwd(@Field("newpassword") String newpassword, @Field("captcha") String captcha, @Field("mobile") String mobile);

    /**
     * 修改手机号
     *
     * @param token
     * @param mobile
     * @param captcha
     * @param area_code
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/changemobile")
    Observable<BaseResponse<BaseEmptyBean>> updatePhone(@Header("token") String token, @Field("mobile") String mobile, @Field("captcha") String captcha,
                                                        @Field("area_code") String area_code);

    /**
     * 发布动态
     *
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/dynamic/release_dynamic")
    Observable<BaseResponse<BaseEmptyBean>> createMoment(@Header("token") String token, @Field("maincontent") String maincontent, @Field("dy_images") String dy_images,
                                                         @Field("visible") int visible, @Field("linkurl") String linkurl, @Field("subscript") int subscript,
                                                         @Field("lng") String lng, @Field("lat") String lat, @Field("location_address") String location_address);

    /**
     * 获取动态列表
     *
     * @param token
     * @param page
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/dynamic/list_dynamic")
    Observable<BaseResponse<List<MomentBean>>> getMomentList(@Header("token") String token, @Field("page") int page, @Field("member_id") String member_id);

    /**
     * 点赞
     *
     * @param token
     * @param dynamic_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/dynamic/point_great")
    Observable<BaseResponse<BaseEmptyBean>> momentFabulous(@Header("token") String token, @Field("dynamic_id") int dynamic_id);

    /**
     * 获取动态详情
     *
     * @param token
     * @param dynamic_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/dynamic/dynamic_info")
    Observable<BaseResponse<MomentInfoBean>> getMomentInfo(@Header("token") String token, @Field("dynamic_id") int dynamic_id);

    /**
     * 评论动态或评论
     *
     * @param token
     * @param dynamic_id
     * @param review_content
     * @param by_review_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/dynamic/review_comment")
    Observable<BaseResponse<MomentCommentBean>> momentComment(@Header("token") String token, @Field("dynamic_id") int dynamic_id,
                                                              @Field("review_content") String review_content, @Field("by_review_id") String by_review_id);

    /**
     * 获取动态评论列表
     *
     * @param token
     * @param dynamic_id
     * @param page
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/dynamic/review_list")
    Observable<BaseResponse<List<MomentCommentBean>>> getMomentCommentList(@Header("token") String token, @Field("dynamic_id") int dynamic_id,
                                                                           @Field("page") int page);

    /**
     * 删除动态
     *
     * @param token
     * @param dynamic_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/dynamic/dy_del")
    Observable<BaseResponse<BaseEmptyBean>> deleteMoment(@Header("token") String token, @Field("dynamic_id") int dynamic_id);

    /**
     * 删除评论
     *
     * @param token
     * @param review_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/dynamic/review_del")
    Observable<BaseResponse<BaseEmptyBean>> deleteComment(@Header("token") String token, @Field("review_id") int review_id);

    /**
     * 获取新消息条数
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/news/news_count")
    Observable<BaseResponse<NewMessageCountBean>> getNewMessageCount(@Header("token") String token);

    /**
     * 获取新消息列表
     *
     * @param token
     * @param page
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/news/new_news")
    Observable<BaseResponse<List<NewMessageListBean>>> getNewMessageList(@Header("token") String token, @Field("page") int page);

    /**
     * 清空消息列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/news/news_cancel")
    Observable<BaseResponse<BaseEmptyBean>> clearNewMessageList(@Header("token") String token);

    /**
     * 阿里云一键登录
     *
     * @param accessToken
     * @param logindevice
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/oneclick_login")
    Observable<BaseResponse<LoginInfoBean>> loginByAli(@Field("accessToken") String accessToken, @Field("logindevice") String logindevice,
                                                       @Field("uniquely") String uniquely);

    /**
     * 添加好友-搜索
     *
     * @param token
     * @param search_words
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/search_member")
    Observable<BaseResponse<AddFriendSearchBean>> addFriendSearch(@Header("token") String token, @Field("search_words") String search_words);

    /**
     * 删除好友
     *
     * @param token
     * @param member_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/buddy/del_buddy")
    Observable<BaseResponse<BaseEmptyBean>> deleteFriend(@Header("token") String token, @Field("member_id") int member_id);

    /**
     * 设置好友备注跟描述
     *
     * @param token
     * @param member_id
     * @param remarks_name
     * @param description
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/buddy/site_remarks")
    Observable<BaseResponse<BaseEmptyBean>> setUserRemarkName(@Header("token") String token, @Field("member_id") int member_id, @Field("remarks_name") String remarks_name,
                                                              @Field("description") String description);

    /**
     * 获取好友列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/buddy/buddy_list")
    Observable<BaseResponse<List<FriendBean>>> getFriendList(@Header("token") String token);

    /**
     * 获取好友请求列表
     *
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/buddy/buddy_request")
    Observable<BaseResponse<List<FriendRequestBean>>> getFriendRequestList(@Header("token") String token);

    /**
     * 发送添加好友请求
     *
     * @param token
     * @param member_id
     * @param ver_request
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/buddy/buddy_increase")
    Observable<BaseResponse<BaseEmptyBean>> sendAddFriendRequest(@Header("token") String token, @Field("member_id") int member_id,
                                                                 @Field("ver_request") String ver_request, @Field("type") int type);

    /**
     * 同意好友请求
     *
     * @param token
     * @param buddy_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/buddy/buddy_request_deal")
    Observable<BaseResponse<BaseEmptyBean>> agreeFriendRequest(@Header("token") String token, @Field("buddy_id") int buddy_id);

    /**
     * 获取举报内容列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/site/complaint_list")
    Observable<BaseResponse<List<ReportBean>>> getReportList(@Header("token") String token);

    /**
     * 提交投诉
     *
     * @param token
     * @param member_id
     * @param complaint_id
     * @param complaint_content
     * @param complaint_images
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/site/dynamic_complaint")
    Observable<BaseResponse<BaseEmptyBean>> putReport(@Header("token") String token, @Field("member_id") int member_id, @Field("complaint_id") int complaint_id,
                                                      @Field("complaint_content") String complaint_content, @Field("complaint_images") String complaint_images);

    /**
     * 获取好友请求新消息条数
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/buddy/buddy_news")
    Observable<BaseResponse<FriendRequestCountBean>> getFriendRequestCount(@Header("token") String token);

    /**
     * 搜索好友
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/buddy/buddy_search")
    Observable<BaseResponse<List<FriendCityBean>>> searchFriend(@Header("token") String token, @Field("serch_keys") String serch_keys);

    /**
     * 把用户加入黑名单
     *
     * @param token
     * @param member_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/blacklist/black_join")
    Observable<BaseResponse<BaseEmptyBean>> putUserInBlack(@Header("token") String token, @Field("member_id") int member_id);

    /**
     * 把用户移除黑名单
     *
     * @param token
     * @param member_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/blacklist/black_remove")
    Observable<BaseResponse<BaseEmptyBean>> putUserOutBlack(@Header("token") String token, @Field("member_id") int member_id);

    /**
     * 获取黑名单列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/blacklist/black_list")
    Observable<BaseResponse<List<BlackListBean>>> getBlackList(@Header("token") String token);

    /**
     * 提交意见反馈
     *
     * @param token
     * @param maincontent
     * @param feedimages
     * @param mobile
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/site/feedback")
    Observable<BaseResponse<BaseEmptyBean>> putFeedBack(@Header("token") String token, @Field("maincontent") String maincontent, @Field("feedimages") String feedimages,
                                                        @Field("mobile") String mobile);

    /**
     * 上传收藏
     *
     * @param token
     * @param collectdetail
     * @param collectimage
     * @param member_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/collect/collect_add")
    Observable<BaseResponse<BaseEmptyBean>> addChatCollect(@Header("token") String token, @Field("collectdetail") String collectdetail,
                                                           @Field("collectimage") String collectimage, @Field("member_id") int member_id);

    /**
     * 获取收藏列表
     *
     * @param token
     * @param page
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/collect/collect_list")
    Observable<BaseResponse<List<ChatCollectBean>>> getChatCollectList(@Header("token") String token, @Field("page") int page);

    /**
     * 删除收藏
     *
     * @param token
     * @param collect_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/collect/collect_remove")
    Observable<BaseResponse<BaseEmptyBean>> deleteChatCollect(@Header("token") String token, @Field("collect_id") int collect_id);

    /**
     * 获取城市列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/area/area_list")
    Observable<BaseResponse<List<CityListBean>>> getCityList(@Header("token") String token);

    /**
     * 设置隐私权限配置
     *
     * @param token
     * @param is_verification
     * @param is_allow
     * @param dy_auth
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/site/site_member")
    Observable<BaseResponse<BaseEmptyBean>> setPrivateConfig(@Header("token") String token, @Field("is_verification") String is_verification,
                                                             @Field("is_allow") String is_allow, @Field("dy_auth") String dy_auth,
                                                             @Field("is_auto") String is_auto, @Field("way_type") String way_type);

    /**
     * 获取群发助手列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/chat/chat_group_list")
    Observable<BaseResponse<List<GroupMessageListBean>>> getGroupMessageList(@Header("token") String token, @Field("page") int page);

    /**
     * 群发消息
     *
     * @param token
     * @param chat_member_ids
     * @param type
     * @param maincontent
     * @param hxusernames
     * @param audio_time
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/chat/chat_group")
    Observable<BaseResponse<BaseEmptyBean>> sendGroupMessage(@Header("token") String token, @Field("chat_member_ids") String chat_member_ids, @Field("type") int type,
                                                             @Field("maincontent") String maincontent, @Field("hxusernames") String hxusernames,
                                                             @Field("audio_time") int audio_time);

    /**
     * 清空群发消息
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/chat/chat_group_cancel")
    Observable<BaseResponse<BaseEmptyBean>> clearGroupMessage(@Header("token") String token);

    /**
     * 重新发送群发消息
     *
     * @param token
     * @param chat_group_id
     * @param type
     * @param maincontent
     * @param audio_time
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/chat/chat_resend")
    Observable<BaseResponse<BaseEmptyBean>> reSendGroupMessage(@Header("token") String token, @Field("chat_group_id") int chat_group_id, @Field("type") int type,
                                                               @Field("maincontent") String maincontent, @Field("audio_time") int audio_time);

    /**
     * 添加或编辑自动回复消息
     *
     * @param token
     * @param host_type
     * @param maincontent
     * @param hostimage
     * @param host_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/auto/auto_add")
    Observable<BaseResponse<BaseEmptyBean>> addAutoSendMsg(@Header("token") String token, @Field("host_type") int host_type, @Field("maincontent") String maincontent,
                                                           @Field("hostimage") String hostimage, @Field("host_id") String host_id);

    /**
     * 获取自动回复列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/auto/auto_list")
    Observable<BaseResponse<List<AutoSendMessageBean>>> getAutoSendMessageList(@Header("token") String token);

    /**
     * 修改自动打招呼item是否选中
     *
     * @param token
     * @param host_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/auto/auto_sel")
    Observable<BaseResponse<BaseEmptyBean>> updateAutoSendMsgItem(@Header("token") String token, @Field("host_id") int host_id);

    /**
     * 删除某一条自动打招呼消息
     *
     * @param token
     * @param host_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/auto/auto_del")
    Observable<BaseResponse<BaseEmptyBean>> deleteAutoSendMessageItem(@Header("token") String token, @Field("host_id") int host_id);

    /**
     * 自动打招呼排序
     *
     * @param token
     * @param host_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/auto/auto_change")
    Observable<BaseResponse<BaseEmptyBean>> moveAutoSendMessage(@Header("token") String token, @Field("host_id") String host_id);

    /**
     * 根据类型获取协议内容
     *
     * @param token
     * @param type
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/site/site_protocol")
    Observable<BaseResponse<ProtocolBean>> getProtocolByType(@Header("token") String token, @Field("type") String type);

    /**
     * 根据环信名称获取用户信息
     *
     * @param token
     * @param hxusername
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/hx_member_info")
    Observable<BaseResponse<HxUserInfoBean>> getUserInfoByHx(@Header("token") String token, @Field("hxusername") String hxusername);

    /**
     * 获取查找我的方式列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/site/site_find_way")
    Observable<BaseResponse<List<SettingFindMyWayBean>>> getSettingFindMyWayList(@Header("token") String token);

    /**
     * 根据二维码信息获取用户信息
     *
     * @param utl
     * @param token
     * @return
     */
    @POST
    Observable<BaseResponse<UserInfoBean>> getUserInfoByQrCode(@Url String utl, @Header("token") String token);

    /**
     * 微信登录
     *
     * @param code
     * @param logindevice
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/wechat_login")
    Observable<BaseResponse<LoginInfoBean>> loginByWx(@Field("code") String code, @Field("logindevice") String logindevice, @Field("uniquely") String uniquely);

    /**
     * 获取分享信息
     *
     * @param token
     * @param member_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/member_share")
    Observable<BaseResponse<ShareInfoBean>> getShareInfo(@Header("token") String token, @Field("member_id") int member_id);

    /**
     * 根据口令获取用户信息
     *
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/slogan_member")
    Observable<BaseResponse<SloganMemberBean>> getSloganMenber(@Header("token") String token, @Field("slogan") String slogan);

    /**
     * 通过阿里token绑定手机号
     *
     * @param token
     * @param accessToken
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/ali_bind_mobile")
    Observable<BaseResponse<BaseEmptyBean>> bindPhoneByAli(@Header("token") String token, @Field("accessToken") String accessToken);

    /**
     * 获取快捷回复列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/reply/reply_list")
    Observable<BaseResponse<List<ChatQuickMsgBean>>> getChatQuickMsgList(@Header("token") String token);

    /**
     * 添加快捷回复
     *
     * @param token
     * @param maincontent
     * @param reply_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/reply/reply_add")
    Observable<BaseResponse<BaseEmptyBean>> addChatQucikMsg(@Header("token") String token, @Field("maincontent") String maincontent,
                                                            @Field("reply_id") String reply_id, @Field("reply_images") String reply_images);

    /**
     * 删除快捷回复
     *
     * @param token
     * @param reply_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/reply/reply_del")
    Observable<BaseResponse<BaseEmptyBean>> deleteChatQuickMsg(@Header("token") String token, @Field("reply_id") int reply_id);

    /**
     * 快捷回复排序
     *
     * @param token
     * @param reply_ids
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/reply/reply_change")
    Observable<BaseResponse<BaseEmptyBean>> moveChatQuickMsg(@Header("token") String token, @Field("reply_ids") String reply_ids);

    /**
     * 获取邀请好友分享内容
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/member/buddy_share")
    Observable<BaseResponse<ShareMineInfoBean>> getShareMineInfo(@Header("token") String token);

    /**
     * 绑定或解绑微信
     *
     * @param token
     * @param code
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/wechat_bind")
    Observable<BaseResponse<BaseEmptyBean>> bindWechat(@Header("token") String token, @Field("code") String code);

    /**
     * 屏蔽动态
     *
     * @param token
     * @param dynamic_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/dynamic/dynamic_shield")
    Observable<BaseResponse<BaseEmptyBean>> shieldMoment(@Header("token") String token, @Field("dynamic_id") int dynamic_id);

    /**
     * 上传截图图片
     *
     * @param token
     * @param risk_image
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/risk/risk_record")
    Observable<BaseResponse<BaseEmptyBean>> riskRecordImg(@Header("token") String token, @Field("risk_image") String risk_image);

    /**
     * 创建标签
     *
     * @param token
     * @param member_ids
     * @param name
     * @param lable_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/lable/lable_create")
    Observable<BaseResponse<BaseEmptyBean>> createFriendLable(@Header("token") String token, @Field("member_ids") String member_ids, @Field("name") String name,
                                                              @Field("lable_id") String lable_id);

    /**
     * 获取标签列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/lable/lable_list")
    Observable<BaseResponse<List<FriendLableListBean>>> getFriendLableList(@Header("token") String token);

    /**
     * 删除标签
     *
     * @param token
     * @param lable_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/lable/lable_del")
    Observable<BaseResponse<BaseEmptyBean>> deleteFriendLable(@Header("token") String token, @Field("lable_id") int lable_id);

    /**
     * 标签详情
     *
     * @param token
     * @param lable_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/lable/lable_info")
    Observable<BaseResponse<FriendLableInfoBean>> getFriendLableInfo(@Header("token") String token, @Field("lable_id") String lable_id);

    /**
     * 设置好友标签
     *
     * @param token
     * @param member_id
     * @param lable_name
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/buddy/buddy_lable_site")
    Observable<BaseResponse<BaseEmptyBean>> setUserLable(@Header("token") String token, @Field("member_id") int member_id, @Field("lable_name") String lable_name);

    /**
     * 版本更新查询
     *
     * @param token
     * @param type
     * @param version_number
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/site/site_version")
    Observable<BaseResponse<UpdateVersionBean>> updateVersion(@Header("token") String token, @Field("type") String type,
                                                              @Field("version_number") String version_number);

    /**
     * 调用官方客服消息
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/assistant/assistant_enter")
    Observable<BaseResponse<BaseEmptyBean>> sendCustomServiceMsg(@Header("token") String token);

    /**
     * 获取官方底部菜单
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/assistant/assistant_menu")
    Observable<BaseResponse<List<ChatBottomAssistantMenuBean>>> getChatBottomAssistantMenu(@Header("token") String token);

    /**
     * 根据菜单id获取官方消息
     *
     * @param token
     * @param type
     * @param push_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/assistant/assistant_push")
    Observable<BaseResponse<BaseEmptyBean>> getChatAssistantMessage(@Header("token") String token, @Field("type") String type,
                                                                    @Field("push_id") int push_id);

    /**
     * 应用到前台-通知服务端
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/member/online_record")
    Observable<BaseResponse<BaseEmptyBean>> putAppOnlineRecord(@Header("token") String token);

    /**
     * 好友排序或获取好友列表
     *
     * @param token
     * @param serch_keys
     * @param sort_type
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/buddy/list_buddy")
    Observable<BaseResponse<List<FriendCityBean>>> getFriendBySort(@Header("token") String token, @Field("serch_keys") String serch_keys,
                                                                   @Field("sort_type") String sort_type);

    /**
     * 通知服务器自己在线
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/timing/timing_record")
    Observable<BaseResponse<BaseEmptyBean>> putServiceOnline(@Header("token") String token, @Field("member_version") String member_version);

    /**
     * 获取我的会员信息
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/plus/plus_features")
    Observable<BaseResponse<VipInfoBean>> getVipInfo(@Header("token") String token);

    /**
     * 获取我的会员设置
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/plus/plus_features_list")
    Observable<BaseResponse<List<VipSettingBean>>> getMintVipSetting(@Header("token") String token);

    /**
     * 修改会员功能设置
     *
     * @param token
     * @param type
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/plus/plus_features_site")
    Observable<BaseResponse<BaseEmptyBean>> updateVipSetting(@Header("token") String token, @Field("type") String type);

    /**
     * 批量清除
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/site/cancel_site_deal")
    Observable<BaseResponse<BaseEmptyBean>> batchClear(@Header("token") String token, @Field("cancel_id") int cancel_id);

    /**
     * 获取清除列表
     *
     * @param token
     * @param type
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/site/cancel_site_list")
    Observable<BaseResponse<List<BatchClearListBean>>> getBatchClearList(@Header("token") String token, @Field("type") int type);

    /**
     * 获取支付价格列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @POST("api/plus/plus_cost")
    Observable<BaseResponse<List<PayListBean>>> getPayList(@Header("token") String token);

    /**
     * 上传用户地址
     *
     * @param token
     * @param lat
     * @param lng
     * @param location_address
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/coordinate_record")
    Observable<BaseResponse<BaseEmptyBean>> putUserLocation(@Header("token") String token, @Field("lat") double lat, @Field("lng") double lng,
                                                            @Field("location_address") String location_address);

    /**
     * 从服务端获取消息记录
     *
     * @param token
     * @param member_id
     * @param msg_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/news/news_records")
    Observable<BaseResponse<List<ChatHistoryBean>>> getChatHistory(@Header("token") String token, @Field("member_id") int member_id,
                                                                   @Field("msg_id") String msg_id);


    /**
     * 获取用户是否注册
     *
     * @param token
     * @param mobile
     * @param area_code
     * @param uniquely
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/member/is_register")
    Observable<BaseResponse<UserRegisterBean>> getUserIsRegister(@Field("mobile") String mobile, @Field("area_code") String area_code,
                                                                 @Field("uniquely") String uniquely);

    /**
     * 获取域名配置
     *
     * @param url
     * @param type
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST
    Observable<BaseResponse<DomainNameBean>> getDomainNameConfig(@Url String url, @Field("type") int type);


    /**
     * 获取群组列表
     *
     */
    @Headers("urlname:contenturl")
    @GET("api/group/my_groups")
    Observable<BaseResponse<GroupListBean>> getGroupList(@Header("token") String token);

    /**
     * 查找群组列表
     *
     */
    @Headers("urlname:contenturl")
    @GET("api/group/find_groups")
    Observable<BaseResponse<List<GroupSearchBean>>> searchGroupList(@Header("token") String token, @Query("group_id") String groupID,@Query("group_name") String groupName);

    /**
     * 加入群组
     *
     * @param token
     * @param group_id
     * @param question
     * @param answer
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/join_group")
    Observable<BaseResponse<GroupJoinBean>> joinGroup(@Header("token") String token,
                                                      @Field("group_id") String group_id,
                                                      @Field("question") String question,
                                                      @Field("answer") String answer);


    /**
     * 退出群组
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_exit")
    Observable<BaseResponse<BaseEmptyBean>> logoutGroup(@Header("token") String token,
                                                        @Field("group_id") String group_id);


    /**
     * 创建群组
     *
     * @param token
     * @param group_id
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/group/group_create")
    Observable<BaseResponse<GroupCreateBean>> createGroup(@Header("token") String token,
                                                          @Field("member_ids") String group_id);


    /**
     * 群组邀请新成员
     *
     * @param token
     * @param member_ids
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_add_multiple")
    Observable<BaseResponse<BaseEmptyBean>> inviteGroupMember(@Header("token") String token,
                                                                          @Field("group_id") String group_id,
                                                                          @Field("member_ids") String member_ids);


    /**
     * 群组删除成员
     *
     * @param token
     * @param member_ids
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_del_multiple")
    Observable<BaseResponse<BaseEmptyBean>> deleteGroupMember(@Header("token") String token,
                                                                          @Field("group_id") String group_id,
                                                                          @Field("member_ids") String member_ids);


    /**
     * 群组详情
     *
     * @param token
     * @param group_id
     * @return
     */
    @Headers("urlname:base")
    @GET("api/group/group_info_v2")
    Observable<BaseResponse<GroupInfoBean>> getGroupInfo(@Header("token") String token,
                                                         @Query("group_id") String group_id);

    @Headers("urlname:base")
    @GET("api/group/group_info_members_v2")
    Observable<BaseResponse<QueryMembersBean>> getGroupMembers(@Header("token") String token,
                                                         @Query("group_id") String group_id,
                                                          @Query("page") String page,
                                                          @Query("page_size") String page_size);

    /**
     * 搜索群成员（单个禁言、添加管理、群主转让）
     * @param token
     * @param group_id
     * @param page
     * @param page_size
     * @param keyword
     * @return
     */
    @Headers("urlname:base")
    @GET("api/group/group_members_query")
    Observable<BaseResponse<QueryMembersBean>> queryGroupMembers(@Header("token") String token,
                                                                 @Query("group_id") String group_id,
                                                                 @Query("page") String page,
                                                                 @Query("page_size") String page_size,
                                                                 @Query("keyword") String keyword);
    @Headers("urlname:base")
    @GET("api/group/group_info_owner_admins_v2")
    Observable<BaseResponse<List<ManagerMembersBean>>> getGroupManagers(@Header("token") String token,
                                                                  @Query("group_id") String group_id,
                                                                  @Query("page") String page,
                                                                  @Query("page_size") String page_size);
    @Headers("urlname:base")
    @GET("api/buddy/list_buddy_in_group")
    Observable<BaseResponse<List<String>>> getGroupMemberIds(@Header("token") String token,
                                                                  @Query("group_id") String group_id);


    /**
     * 修改群组名称
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_name_modify")
    Observable<BaseResponse<BaseEmptyBean>> modifyGroupName(@Header("token") String token,
                                                            @Field("group_id") String group_id,
                                                            @Field("group_name") String group_name);

    //FIXME: 需要确认接口
    /**
     * 修改在群组中的昵称
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/my_group_member_name_modify")
    Observable<BaseResponse<BaseEmptyBean>> modifyGroupNickName(@Header("token") String token,
                                                                @Field("group_id") String group_id,
                                                                @Field("nickname") String nickname);

    /**
     * 修改群描述
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_description_modify")
    Observable<BaseResponse<BaseEmptyBean>> modifyGroupDescription(@Header("token") String token,
                                                                @Field("group_id") String group_id,
                                                                @Field("description") String description);



    /**
     * 修改群组公告
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_announcement_modify")
    Observable<BaseResponse<BaseEmptyBean>> modifyGroupMotice(@Header("token") String token,
                                                              @Field("group_id") String group_id,
                                                              @Field("announcement") String announcement);

;


    /**
     * 修改群组保护
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_protectedswitch_modify")
    Observable<BaseResponse<BaseEmptyBean>> modifyGroupProtect(@Header("token") String token,
                                                                @Field("group_id") String group_id);

    /**
     * 设置消息免打扰
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/switch_no_disturbance")
    Observable<BaseResponse<BaseEmptyBean>> messageIgnore(@Header("token") String token,
                                                          @Field("group_id") String group_id);




    /**
     * 添加多个群组成员
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_add_multiple")
    Observable<BaseResponse<BaseEmptyBean>> addMembersGroup(@Header("token") String token,
                                                            @Field("group_id") String group_id,
                                                            @Field("member_ids") String member_ids);

    /**
     * 删除多个群组成员
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_add_multiple")
    Observable<BaseResponse<BaseEmptyBean>> deleteMembersGroup(@Header("token") String token,
                                                               @Field("group_id") String group_id,
                                                               @Field("member_ids") String member_ids);


    /**
     * 修改群组验证方式
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_join_mode_modify")
    Observable<BaseResponse<BaseEmptyBean>> modifyJoinModeGroup(@Header("token") String token,
                                                               @Field("group_id") String group_id,
                                                               @Field("join_mode") String join_mode,
                                                               @Field("join_question1") String join_question1);


    /**
     * 修改搜群方式
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/group/group_property_modify")
    Observable<BaseResponse<BaseEmptyBean>> modifyPropertyGroup(@Header("token") String token,
                                                                @Field("group_id") String group_id,
                                                                @Field("group_property") String group_property);

    /**
     * 修改找群开关
     *
     * @param token
     * @return
     */
    @Headers("urlname:contenturl")
    @FormUrlEncoded
    @POST("api/group/group_findswitch_modify")
    Observable<BaseResponse<BaseEmptyBean>> modifyFindswitchGroup(@Header("token") String token,
                                                                @Field("group_id") String group_id);

    /**
     * 群组详情通过环信号
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @GET("api/group/group_info_by_hxid")
    Observable<BaseResponse<GroupInfoBean>> getHxGroupInfo(@Header("token") String token,
                                                           @Query("group_id") String group_id);

    /**
     * 投诉群组
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_complaint")
    Observable<BaseResponse<BaseEmptyBean>> complaintGroup(@Header("token") String token,
                                                           @Field("group_id") String group_id,
                                                           @Field("reason") String reason,
                                                           @Field("chatevidence") String chatevidence,
                                                           @Field("evidenceimages") String evidenceimages,
                                                           @Field("content") String content);


    /**
     * 删除群组
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_delete")
    Observable<BaseResponse<BaseEmptyBean>> deleteGroup(@Header("token") String token,
                                                        @Field("group_id") String group_id);

    /**
     * 删除群组
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_exit")
    Observable<BaseResponse<BaseEmptyBean>> exitGroup(@Header("token") String token,
                                                      @Field("group_id") String group_id);

    /**
     * 修改二维码开关
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_qrcodeswitch_modify")
    Observable<BaseResponse<BaseEmptyBean>> modifyQrGroup(@Header("token") String token,
                                                        @Field("group_id") String group_id);

    /**
     * 整个群组禁言
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_ban")
    Observable<BaseResponse<BaseEmptyBean>> muteGroup(@Header("token") String token,
                                                      @Field("group_id") String group_id);

    /**
     * 解除整个群组禁言
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_ban_remove")
    Observable<BaseResponse<BaseEmptyBean>> relieveMuteGroup(@Header("token") String token,
                                                             @Field("group_id") String group_id);

    /**
     * 禁言群成员
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_mute")
    Observable<BaseResponse<BaseEmptyBean>> muteGroupMembres(@Header("token") String token,
                                                             @Field("group_id") String group_id,
                                                             @Field("member_ids") String member_ids,
                                                             @Field("duration") int duration);

    /**
     * 解除禁言群成员
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_mute_remove")
    Observable<BaseResponse<BaseEmptyBean>> relieveMuteGroupMembres(@Header("token") String token,
                                                                    @Field("group_id") String group_id,
                                                                    @Field("member_ids") String member_ids);

    /**
     * 群组待审核列表
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @GET("api/group/group_member_audit_list")
    Observable<BaseResponse<List<MembersBean>>> joinGroupApplyList(@Header("token") String token,
                                                                   @Query("group_id") String group_id);


    /**
     * 审核用户
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_member_audit")
    Observable<BaseResponse<BaseEmptyBean>> examineJoinGroupApply(@Header("token") String token,
                                                                  @Field("group_id") String group_id,
                                                                  @Field("member_id") String member_id,
                                                                  @Field("state") String state);

    /**
     * 设置群组管理员
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_admin_add")
    Observable<BaseResponse<BaseEmptyBean>> addAdminGroup(@Header("token") String token,
                                                          @Field("group_id") String group_id,
                                                          @Field("member_ids") String member_ids);


    /**
     * 删除群组管理员
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_admin_del")
    Observable<BaseResponse<BaseEmptyBean>> deleteAdminGroup(@Header("token") String token,
                                                             @Field("group_id") String group_id,
                                                             @Field("member_ids") String member_ids);


    /**
     * 转让群组
     *
     * @param token
     * @return
     */
    @Headers("urlname:base")
    @FormUrlEncoded
    @POST("api/group/group_transfer")
    Observable<BaseResponse<BaseEmptyBean>> transferAdminGroup(@Header("token") String token,
                                                               @Field("group_id") String group_id,
                                                               @Field("member_id") String member_id);

}
